1. Technical Field
The present invention is directed generally toward computer storage systems and, more particularly, toward a method and apparatus for managing independent storage controller memory systems as a single memory system for the purposes of allowing shared storage volume access.
2. Description of the Related Art
Redundant Array of Independent Disks (RAID) is a disk subsystem that increases performance and provides fault tolerance. RAID is a set of two or more hard disks and a specialized disk controllers that contain the RAID functionality. RAID can also be implemented via software only, but with less performance, especially when rebuilding data after a failure. RAID improves performance by disk striping, which interleaves bytes or groups of bytes across multiple drives, so more than one disk is reading and writing simultaneously. Fault tolerance is achieved by mirroring or parity. Mirroring involves duplication of the data on two drives. A failed drive can be hot swapped with a new one, and the RAID controller automatically rebuilds the lost data from the mirrored drive.
Dual, independent storage controllers are required to provide full data path redundancy to host computer systems. The controllers share access to the disk drives via their respective interface ports. The controllers present the data on the drives to one or more host systems as one or more logical volumes. However, simultaneous or interleaved access to data on a given volume from a plurality of controllers has associated cache coherency and data access latency problems. The coherency problems arise because each controller has an independent memory system for caching data from the volumes. Data access latency problems arise because the controllers must make their respective caches coherent when the two controllers interleave access to the data in the volumes.
One solution to the problems in the prior art is to not allow the controllers to simultaneously access the data. However, this approach restricts simultaneous data access to hosts connected to a single controller. Another solution is to share a common data cache between a plurality of controllers. This approach is lacking because the common data cache is a single point of failure. Yet another solution is to establish an ownership model where controllers trade off the data access privileges. However, there are latencies associated with ownership transfer. These latencies are visible to the host computer systems.
Therefore, it would be advantageous to provide an improved method and apparatus for managing cache memory for a storage volume.